package cn.com.aiouyi.vo;

import java.io.Serializable;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import lombok.Getter;
import lombok.Setter;

/**
 * 链接对象
 * @author hanson
 *
 */
@Getter
@Setter
public class Link implements Serializable{

	private static final long serialVersionUID = -818180851805718882L;

	public static enum Type{
		/** 无 */
		none,
		/** url链接 */
		url,
		/** 文章 */
		article,
		/** 文章分类 */
		articleClass,
		/** 文件下载 */
		fileDownload
		;
		
		
	}
	
	/** 链接类型 ,默认是关键字*/
	private Type type;
	
	/** 链接到商品时商品数据 */
	private String data;
	
	/**
	 * 获取json对象
	 * @return
	 */
	public JSONObject getJsonData(){
		return JSON.parseObject(getData());
	}
	
	/**
	 * 解析生成链接
	 * @param webPath
	 * @return
	 */
	public String parseLink(String webPath){
		String linkUrl = "";
		switch(getType()){
		case none:{
			linkUrl = "javascript:void(0)";
			break;
		}
		case url:{
			Link.UrlData data = JSON.parseObject(this.getData(), Link.UrlData.class);
			linkUrl = data.getUrl();
			break;
		}
		case article:{
			Link.ArticleData data = JSON.parseObject(this.getData(), Link.ArticleData.class);
			linkUrl = webPath + "/article?articleId="+ data.getId();
			break;
		}
		case articleClass:{
			Link.ArticleClassData data = JSON.parseObject(this.getData(), Link.ArticleClassData.class);
			linkUrl = webPath + "/page?articleClassId="+ data.getId();
			break;
		}
		case fileDownload:{
			linkUrl = webPath + "/fileDownload";
			break;
		}
		default:
			break;
		}
		return linkUrl;
	}
	
	/**
	 * type=url时，data模型如下
	 */
	@Getter
	@Setter
	public static class UrlData{
		/** 关键字  */
		private String url;
	}
	
	/**
	 * type=article时，data模型如下
	 */
	@Getter
	@Setter
	public static class ArticleData{
		/** 文章id  */
		private Long id;
		/** 文章名称 */
		private String title;
	}
	
	/**
	 * type=articleClass时，data模型如下
	 */
	@Getter
	@Setter
	public static class ArticleClassData{
		/** 文章分类id  */
		private Long id;
		/** 文章分类名称 */
		private String name;
	}
	
}
